home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / MiscKit1.7.1 / MiscKit / Examples / MiscPriorityQueue / queuetest.m < prev    next >
Text File  |  1994-01-07  |  2KB  |  120 lines

  1. /* NAME:
  2. **    QueueTest.m
  3. **
  4. **    COPYRIGHT 1992 BY ONYSCHUK AND ASSOCIATES
  5. **    ALL RIGHTS RESERVED.
  6. **
  7. ** REVISION HISTORY:
  8. **    Sun Aug 23 21:10:26 EDT 1992    Mark Onyschuk
  9. **                    Starting point
  10. **
  11. ** DESCRIPTION:
  12. **    Program to demonstrate and put the MiscPriorityQueue class
  13. **    to the test.
  14. */
  15.  
  16. #define NELEM    10
  17.  
  18. #import <misckit/misckit.h>
  19.  
  20. void prioritize(void)
  21. {
  22.     int            i;
  23.     
  24.     id            queue;
  25.  
  26.     id            obj;
  27.     unsigned int    priority;
  28.  
  29.     queue = [[MiscPriorityQueue alloc] init];
  30.     
  31.     printf("Queueing and dequeueing Objects:\n\n");
  32.     
  33.     for (i = NELEM; i > 0; i--)
  34.     {
  35.          obj = [[Object alloc] init];
  36.      priority = random() % NELEM;
  37.      
  38.      printf("Queueing object %p with priority %d\n", obj, priority);
  39.      
  40.      [queue addObject:obj withPriority:priority];
  41.     }
  42.     
  43.     printf("\n");
  44.     
  45.     for (i = NELEM; i > 0; i--)
  46.     {
  47.         obj = [queue removeObject];
  48.     
  49.     printf("Dequeued object %p\n", obj);
  50.     }
  51. }
  52.  
  53.  
  54. void copyqueue(void)
  55. {
  56.     int            i;
  57.     
  58.     id            queue;
  59.     id            copyA;
  60.     id            copyB;
  61.     id            copyC;
  62.     id            copyD;
  63.  
  64.     id            obj;
  65.     unsigned int    priority;
  66.  
  67.     queue = [[MiscPriorityQueue alloc] init];
  68.     
  69.     printf("Copying Objects:\n\n");
  70.     
  71.     for (i = NELEM; i > 0; i--)
  72.     {
  73.          obj = [[Object alloc] init];
  74.      priority = random() % NELEM;
  75.      
  76.      printf("Queueing object %p with priority %d\n", obj, priority);
  77.      
  78.      [queue addObject:obj withPriority:priority];
  79.     }
  80.     
  81.     printf("Copying queue to copyA, copyB, copyC, and copyD.\n");
  82.     copyA = [queue copy];
  83.     copyB = [queue copy];
  84.     copyC = [queue copy];
  85.     copyD = [queue copy];
  86.  
  87.     for (i = NELEM; i > 0; i--)
  88.     {
  89.     priority = [queue highestPriority];
  90.         obj      = [queue removeObject];
  91.     
  92.     printf("Dequeued object %p (orig.) with priority %d\n", obj, priority);
  93.     }
  94.  
  95.     for (i = NELEM; i > 0; i--)
  96.     {
  97.     priority = [copyA highestPriority];
  98.         obj      = [copyA removeObject];
  99.     
  100.     printf("Dequeued object %p (copyA) with priority %d\n", obj, priority);
  101.     }
  102.     
  103.     printf("copyB %s copyC\n", ([copyB isEqual:copyC]) ? "==" : "!=");
  104.     
  105.     
  106.     printf("removing last item from copyD\n");
  107.     [copyD removeObject];
  108.     
  109.     printf("copyC %s copyD\n", ([copyC isEqual:copyD]) ? "==" : "!=");
  110. }
  111.  
  112.  
  113. void main(void)
  114. {
  115.     prioritize();
  116.  
  117.     printf("\n");
  118.  
  119.     copyqueue();
  120. }